计网网络篇

1. 公钥和私钥

公钥和私钥是通过一种算法得到的一个密钥对,公钥是秘钥对中公开的部分,私钥是非公开的部分。如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

原则:公钥公开,私钥只有自己拥有。

2. 对称加密与非对称加密

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;

​ 非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

​ 由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

总结一下:通过非对称加密的方式把秘钥发送过去,接下来用这个秘钥一直进行对称加密。

即:第一次通信采用非对称加密,接下来的通信采用对称加密

3. HTTP的相关问题

3.1 HTTP概念
HTTP协议:超文本传输协议。是应用层协议,是基于TCP协议的,明文传输,客户端与服务器端都无法验证对方的身份;

超文本:广义上的文本,包括图片、视频、压缩包、超链接等。

3.2 HTTP的特点
1、简单、灵活:HTTP头部的各类字段组成都没有固定要求,允许开发人员自定义和补充。

2、无状态:服务器不会记录HTTP的状态,减轻了服务器的开销。 但是在完成关联性操作时不方便(如玩4399小游戏,不能换一个游戏就重新登一次账户)

解决办法:使用Cookie技术,通过在请求和响应报文中写入Cookie信息来来控制客户端的状态。

当客户端第一次请求后,服务器会下发一个装有客户信息的Cookie,后续客户端请求服务器时,带上Cookie,服务器就能识别出是谁。
3、不安全
HTTP传输文本时采用明文传输,不加密,可以直接看见信息。
通信时不会验证双方身份,可能访问虚假用户
传输过程中的报文可能遭到无疑篡改。
3.3 HTTP的状态码
写法 类别 解释
1xx Information(信息状态码) 接受的请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向状态码) 需要进行附加操作以完成请求
4xx Client Error(客户端错误状态码) 服务器无法处理请求
5xx Server Error(服务端错误状态码) 服务器处理请求出错

4. HTTPS相关问题

  1. HTTPS概念
    HTTPS协议是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。
  1. HTTPS为什么安全?
    1、混合加密
    作用:防窃听

混合加密:即同时采用公钥和私钥加密,更安全,更高效,更不易被破解。 具体操作方法见问本文章的第一个问题。

HTTPS采用对称加密和非对称加密结合的混合加密方式
在通信建立前采用非对称加密的方式交换秘钥,后续就不在使用非对称加密
在通信过程中全部使用对称加密的会话秘钥方式,加密明文数据。
2. 摘要算法
作用:防止数据被篡改。

摘要算法:实现数据完整性,能够为数据生成独一无二的指纹,指纹用于校验数据的完整性,解决了被篡改的风险。

过程
1、客户端发送明文前,会通过摘要算法算出明文的指纹,发送时明文和指纹一同加密,发送给服务器。

2、服务器解密后,用相同的摘要算法算出发送过来的明文,通过比较客户端携带的指纹和当前指纹做比较,若相同,则说明数据是完整的。

  1. 数字证书
    作用:解决身份认证问题。

过程:借助第三方权威机构CA(数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构办法)中,只要证书是可信的,公钥就是可信的。

  1. 采用HTTPS加密的具体流程:
    假设电脑A要向电脑B发送数据

电脑A发送数据前,先通过摘要算法计算出明文的指纹,然后将明文+指纹打包成数据包,并将自己的对称加密的秘钥放入数据报, 同时向电脑B索要公钥。

电脑B将公钥发送过来后,电脑A采用非对称加密的方式,通过电脑B的公钥将自己的数据包加密(非对称加密的原理见之前的解答),加密后,发送给电脑B

电脑B收到电脑A发送过来的数据包后,发现是非对称加密的方式,于是使用自己的私钥解密, 解密后通过计算该数据包的指纹, 与数据包内指纹对比, 若指纹相同,则表示数据没有丢失。

接下来的通信,双方都将使用数据包内的秘钥以对称加密的方式通信。

5. HTTP与HTTPS区别

端口不同:HTTP与HTTPS使用不同的连接方式,用的端口也不一样,前者是80,后者是443;

资源消耗:和HTTP通信相比,HTTPS通信会由于加减密处理消耗更多的CPU和内存资源;

开销:HTTPS通信需要证书,而证书一般需要向认证机构购买;

6. 客户端在使用HTTPS方式与Web服务器通信时的步骤

​ (1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

(3)客户端的浏览器与Web服务器开始协商SSL/TLS连接的安全等级,也就是信息加密的等级。

(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

(5)Web服务器利用自己的私钥解密出会话密钥。

(6)Web服务器利用会话密钥加密与客户端之间的通信。